﻿Imports Entidad
Imports Negocio
Imports Utilitario
Public Class frmActualizarProgramacion

    Dim servicio1 As New ProgramacionNegocio
    Dim servicio2 As New DocumentoClienteNegocio

    Dim posicionActual As Integer = 0
    Dim total As Integer = 0

    Sub mensaje(ByVal men As String)
        MsgBox(men, MsgBoxStyle.Information, "Mensajes al Usuario")
    End Sub

    Sub listarPedidosAsignados()
        Dim ds As DataSet = servicio1.listarPedidosXProgramacion(lblCodVehiculo.Text, lblFecha.Text, lblCodTurno.Text)
        dgvRutasPedidos.DataSource = ds.Tables(0)

        total = ds.Tables(0).Rows.Count
    End Sub

    Private Sub frmActualizarProgramacion_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        listarPedidosAsignados()
    End Sub

    Private Sub btnEliminar_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminar.Click
        If verificarPedidosXEliminar() = True Then
            actualizar()
            DialogResult = Windows.Forms.DialogResult.OK
        Else
            DialogResult = Windows.Forms.DialogResult.Cancel
        End If
    End Sub

    Function verificarPedidosXEliminar() As Boolean
        Dim valor As Boolean = False
        Dim contador As Integer = 0
        For Each fila As DataGridViewRow In dgvRutasPedidos.Rows
            If fila.Cells("Column1").Value = False Then
                contador = contador + 1
            End If
        Next

        If contador > 0 Then
            valor = True
        End If

        Return valor
    End Function

    Sub actualizar()
        For Each fila As DataGridViewRow In dgvRutasPedidos.Rows
            If fila.Cells("Column1").Value = False And fila.Cells("Column4").Value <> "PR" Then
                servicio2.actualizarFlagProgramado(fila.Cells("Column10").Value, "P", "0")
                servicio1.eliminarProgramacion(lblCodVehiculo.Text, lblFecha.Text, lblCodTurno.Text, fila.Cells("Column10").Value)
            End If
        Next
    End Sub

    Sub abajo()
        If dgvRutasPedidos.Rows.Count <> 0 Then
            If posicionActual + 1 >= total Then
                mensaje("El registro es el último de la lista.")
            Else
                Dim actual As New Generico(dgvRutasPedidos.Item("Column10", posicionActual).Value, dgvRutasPedidos.Item("Column2", posicionActual).Value, dgvRutasPedidos.Item("Column3", posicionActual).Value, _
                                           dgvRutasPedidos.Item("Column4", posicionActual).Value, dgvRutasPedidos.Item("Column15", posicionActual).Value, CInt(dgvRutasPedidos.Item("Column6", posicionActual).Value), _
                                           CInt(dgvRutasPedidos.Item("Column7", posicionActual).Value), dgvRutasPedidos.Item("Column8", posicionActual).Value, dgvRutasPedidos.Item("Column9", posicionActual).Value, dgvRutasPedidos.Item("Column5", posicionActual).Value)

                Dim abajo As New Generico(dgvRutasPedidos.Item("Column10", posicionActual + 1).Value, dgvRutasPedidos.Item("Column2", posicionActual + 1).Value, dgvRutasPedidos.Item("Column3", posicionActual + 1).Value, _
                                           dgvRutasPedidos.Item("Column4", posicionActual + 1).Value, dgvRutasPedidos.Item("Column15", posicionActual + 1).Value, CInt(dgvRutasPedidos.Item("Column6", posicionActual + 1).Value), _
                                           CInt(dgvRutasPedidos.Item("Column7", posicionActual + 1).Value), dgvRutasPedidos.Item("Column8", posicionActual + 1).Value, dgvRutasPedidos.Item("Column9", posicionActual + 1).Value, dgvRutasPedidos.Item("Column5", posicionActual + 1).Value)

                dgvRutasPedidos.Item("Column10", posicionActual + 1).Value = actual.DOCTO
                dgvRutasPedidos.Item("Column2", posicionActual + 1).Value = actual.CLI_Codigo
                dgvRutasPedidos.Item("Column3", posicionActual + 1).Value = actual.DIS_Codigo
                dgvRutasPedidos.Item("Column4", posicionActual + 1).Value = actual.ESTPRO
                dgvRutasPedidos.Item("Column15", posicionActual + 1).Value = actual.GEN_Zona
                dgvRutasPedidos.Item("Column6", posicionActual + 1).Value = actual.BULTOS
                dgvRutasPedidos.Item("Column7", posicionActual + 1).Value = actual.GEN_Largo
                dgvRutasPedidos.Item("Column8", posicionActual + 1).Value = actual.GEN_PESTotal
                dgvRutasPedidos.Item("Column9", posicionActual + 1).Value = actual.GEN_Volumen
                servicio1.actualizarOrden(actual.DOCTO, abajo.GEN_Orden)
                dgvRutasPedidos.Item("Column5", posicionActual + 1).Value = abajo.GEN_Orden

                dgvRutasPedidos.Rows(posicionActual).Selected = False
                dgvRutasPedidos.Rows(posicionActual + 1).Selected = True

                dgvRutasPedidos.Item("Column10", posicionActual).Value = abajo.DOCTO
                dgvRutasPedidos.Item("Column2", posicionActual).Value = abajo.CLI_Codigo
                dgvRutasPedidos.Item("Column3", posicionActual).Value = abajo.DIS_Codigo
                dgvRutasPedidos.Item("Column4", posicionActual).Value = abajo.ESTPRO
                dgvRutasPedidos.Item("Column15", posicionActual).Value = abajo.GEN_Zona
                dgvRutasPedidos.Item("Column6", posicionActual).Value = abajo.BULTOS
                dgvRutasPedidos.Item("Column7", posicionActual).Value = abajo.GEN_Largo
                dgvRutasPedidos.Item("Column8", posicionActual).Value = abajo.GEN_PESTotal
                dgvRutasPedidos.Item("Column9", posicionActual).Value = abajo.GEN_Volumen
                servicio1.actualizarOrden(abajo.DOCTO, actual.GEN_Orden)
                dgvRutasPedidos.Item("Column5", posicionActual).Value = actual.GEN_Orden

                posicionActual = posicionActual + 1
            End If
        End If
    End Sub

    Sub arriba()
        If dgvRutasPedidos.Rows.Count <> 0 Then
            If posicionActual - 1 < 0 Then
                mensaje("El registro es el primero de la lista.")
            Else
                Dim actual As New Generico(dgvRutasPedidos.Item("Column10", posicionActual).Value, dgvRutasPedidos.Item("Column2", posicionActual).Value, dgvRutasPedidos.Item("Column3", posicionActual).Value, _
                                           dgvRutasPedidos.Item("Column4", posicionActual).Value, dgvRutasPedidos.Item("Column15", posicionActual).Value, CInt(dgvRutasPedidos.Item("Column6", posicionActual).Value), _
                                           CInt(dgvRutasPedidos.Item("Column7", posicionActual).Value), dgvRutasPedidos.Item("Column8", posicionActual).Value, dgvRutasPedidos.Item("Column9", posicionActual).Value, dgvRutasPedidos.Item("Column5", posicionActual).Value)

                Dim arriba As New Generico(dgvRutasPedidos.Item("Column10", posicionActual - 1).Value, dgvRutasPedidos.Item("Column2", posicionActual - 1).Value, dgvRutasPedidos.Item("Column3", posicionActual - 1).Value, _
                                           dgvRutasPedidos.Item("Column4", posicionActual - 1).Value, dgvRutasPedidos.Item("Column15", posicionActual - 1).Value, CInt(dgvRutasPedidos.Item("Column6", posicionActual - 1).Value), _
                                           CInt(dgvRutasPedidos.Item("Column7", posicionActual - 1).Value), dgvRutasPedidos.Item("Column8", posicionActual - 1).Value, dgvRutasPedidos.Item("Column9", posicionActual - 1).Value, dgvRutasPedidos.Item("Column5", posicionActual - 1).Value)

                dgvRutasPedidos.Item("Column10", posicionActual - 1).Value = actual.DOCTO
                dgvRutasPedidos.Item("Column2", posicionActual - 1).Value = actual.CLI_Codigo
                dgvRutasPedidos.Item("Column3", posicionActual - 1).Value = actual.DIS_Codigo
                dgvRutasPedidos.Item("Column4", posicionActual - 1).Value = actual.ESTPRO
                dgvRutasPedidos.Item("Column15", posicionActual - 1).Value = actual.GEN_Zona
                dgvRutasPedidos.Item("Column6", posicionActual - 1).Value = actual.BULTOS
                dgvRutasPedidos.Item("Column7", posicionActual - 1).Value = actual.GEN_Largo
                dgvRutasPedidos.Item("Column8", posicionActual - 1).Value = actual.GEN_PESTotal
                dgvRutasPedidos.Item("Column9", posicionActual - 1).Value = actual.GEN_Volumen
                servicio1.actualizarOrden(actual.DOCTO, arriba.GEN_Orden)
                dgvRutasPedidos.Item("Column5", posicionActual - 1).Value = arriba.GEN_Orden

                dgvRutasPedidos.Rows(posicionActual).Selected = False
                dgvRutasPedidos.Rows(posicionActual - 1).Selected = True

                dgvRutasPedidos.Item("Column10", posicionActual).Value = arriba.DOCTO
                dgvRutasPedidos.Item("Column2", posicionActual).Value = arriba.CLI_Codigo
                dgvRutasPedidos.Item("Column3", posicionActual).Value = arriba.DIS_Codigo
                dgvRutasPedidos.Item("Column4", posicionActual).Value = arriba.ESTPRO
                dgvRutasPedidos.Item("Column15", posicionActual).Value = arriba.GEN_Zona
                dgvRutasPedidos.Item("Column6", posicionActual).Value = arriba.BULTOS
                dgvRutasPedidos.Item("Column7", posicionActual).Value = arriba.GEN_Largo
                dgvRutasPedidos.Item("Column8", posicionActual).Value = arriba.GEN_PESTotal
                dgvRutasPedidos.Item("Column9", posicionActual).Value = arriba.GEN_Volumen
                servicio1.actualizarOrden(arriba.DOCTO, actual.GEN_Orden)
                dgvRutasPedidos.Item("Column5", posicionActual).Value = actual.GEN_Orden

                posicionActual = posicionActual - 1
            End If
        End If
    End Sub

    Private Sub dgvRutasPedidos_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvRutasPedidos.CellClick
        If e.ColumnIndex <> 0 Then
            posicionActual = e.RowIndex
        End If
    End Sub

    Private Sub btnArriba_Click(sender As System.Object, e As System.EventArgs) Handles btnArriba.Click
        arriba()
    End Sub

    Private Sub btnAbajo_Click(sender As System.Object, e As System.EventArgs) Handles btnAbajo.Click
        abajo()
    End Sub

    Sub operacion(e As System.Windows.Forms.DataGridViewCellEventArgs)
        dgvRutasPedidos.EndEdit()

        Dim f As Integer = e.RowIndex

        If dgvRutasPedidos.Item("Column4", f).Value = "PR" Then
            dgvRutasPedidos.Item("Column1", f).Value = True
        End If
    End Sub

    Private Sub dgvRutasPedidos_CellContentClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvRutasPedidos.CellContentClick
        operacion(e)
    End Sub

    Private Sub dgvRutasPedidos_CellContentDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvRutasPedidos.CellContentDoubleClick
        operacion(e)
    End Sub

End Class